package com.ruoyi.business.domain;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 产品溯源对象 jt_product_traceability
 * 
 * @author Alan Zhang
 * @date 2025-03-29
 */
public class JtProductTraceability extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 产品溯源id */
    private Long traceabilityId;

    /** 产品id */
    @Excel(name = "产品id")
    private Long productId;

    /** 溯源编码 */
    @Excel(name = "溯源编码")
    private String traceabilityCode;

    /** 生产批次 */
    @Excel(name = "生产批次")
    private String productionBatch;

    /** 生产日期 */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "生产日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date productionDate;

    /** 产品执行标准号 */
    @Excel(name = "产品执行标准号")
    private String executiveStandard;

    /** 保修期 1年 6个月 */
    @Excel(name = "保修期 1年 6个月")
    private String guaranteePeriod;

    /** 原产地 */
    @Excel(name = "原产地")
    private String countryOfOrigin;

    /** 生产资质编号 */
    @Excel(name = "生产资质编号")
    private String productionQualification;

    /** 销售区域 中东国家 */
    @Excel(name = "销售区域 中东国家")
    private String salesTerritory;

    /** 检查报告 */
    @Excel(name = "检查报告")
    private String reportImageUrl;
    /** 检测报告路径 */
    @Excel(name = "检测报告文件")
    private String testReportUrl;

    /** 国家码 */
    @Excel(name = "国家码")
    private String countryCode;

    /** 服务电话 */
    @Excel(name = "服务电话")
    private String phoneNumber;

    /** 服务信息 */
    @Excel(name = "服务信息")
    private String serviceInfo;

    /** 状态（0正常 1停用） */
    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
    private Integer status;

    public List<JtTraceabilityReport> reportList;

    public void setTraceabilityId(Long traceabilityId) 
    {
        this.traceabilityId = traceabilityId;
    }

    public Long getTraceabilityId() 
    {
        return traceabilityId;
    }

    public void setProductId(Long productId) 
    {
        this.productId = productId;
    }

    public Long getProductId() 
    {
        return productId;
    }

    public void setTraceabilityCode(String traceabilityCode) 
    {
        this.traceabilityCode = traceabilityCode;
    }

    public String getTraceabilityCode() 
    {
        return traceabilityCode;
    }

    public void setProductionBatch(String productionBatch) 
    {
        this.productionBatch = productionBatch;
    }

    public String getProductionBatch() 
    {
        return productionBatch;
    }

    public void setProductionDate(Date productionDate) 
    {
        this.productionDate = productionDate;
    }

    public Date getProductionDate() 
    {
        return productionDate;
    }

    public void setExecutiveStandard(String executiveStandard) 
    {
        this.executiveStandard = executiveStandard;
    }

    public String getExecutiveStandard() 
    {
        return executiveStandard;
    }

    public void setGuaranteePeriod(String guaranteePeriod) 
    {
        this.guaranteePeriod = guaranteePeriod;
    }

    public String getGuaranteePeriod() 
    {
        return guaranteePeriod;
    }

    public void setCountryOfOrigin(String countryOfOrigin) 
    {
        this.countryOfOrigin = countryOfOrigin;
    }

    public String getCountryOfOrigin() 
    {
        return countryOfOrigin;
    }

    public void setProductionQualification(String productionQualification) 
    {
        this.productionQualification = productionQualification;
    }

    public String getProductionQualification() 
    {
        return productionQualification;
    }

    public void setSalesTerritory(String salesTerritory) 
    {
        this.salesTerritory = salesTerritory;
    }

    public String getSalesTerritory() 
    {
        return salesTerritory;
    }

    public String getReportImageUrl() {
        return reportImageUrl;
    }

    public void setReportImageUrl(String reportImageUrl) {
        this.reportImageUrl = reportImageUrl;
    }

    public void setTestReportUrl(String testReportUrl)
    {
        this.testReportUrl = testReportUrl;
    }

    public String getTestReportUrl() 
    {
        return testReportUrl;
    }

    public void setCountryCode(String countryCode) 
    {
        this.countryCode = countryCode;
    }

    public String getCountryCode() 
    {
        return countryCode;
    }

    public void setPhoneNumber(String phoneNumber) 
    {
        this.phoneNumber = phoneNumber;
    }

    public String getPhoneNumber() 
    {
        return phoneNumber;
    }

    public void setServiceInfo(String serviceInfo) 
    {
        this.serviceInfo = serviceInfo;
    }

    public String getServiceInfo() 
    {
        return serviceInfo;
    }

    public void setStatus(Integer status) 
    {
        this.status = status;
    }

    public Integer getStatus() 
    {
        return status;
    }

    public List<JtTraceabilityReport> getReportList() {
        return reportList;
    }

    public void setReportList(List<JtTraceabilityReport> reportList) {
        this.reportList = reportList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("traceabilityId", getTraceabilityId())
            .append("productId", getProductId())
            .append("traceabilityCode", getTraceabilityCode())
            .append("productionBatch", getProductionBatch())
            .append("productionDate", getProductionDate())
            .append("executiveStandard", getExecutiveStandard())
            .append("guaranteePeriod", getGuaranteePeriod())
            .append("countryOfOrigin", getCountryOfOrigin())
            .append("productionQualification", getProductionQualification())
            .append("salesTerritory", getSalesTerritory())
            .append("testReportUrl", getTestReportUrl())
            .append("countryCode", getCountryCode())
            .append("phoneNumber", getPhoneNumber())
            .append("serviceInfo", getServiceInfo())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
